package cn.teduymdj.jxc.mapper;


import cn.teduymdj.jxc.pojo.dto.CustomerReturnListGoodsAddNewDTO;
import cn.teduymdj.jxc.pojo.dto.SelectReturnCondition;
import cn.teduymdj.jxc.pojo.entity.CustomerReturnListGoods;
import cn.teduymdj.jxc.pojo.vo.CustomerReturnListGoodsListItemVO;
import cn.teduymdj.jxc.pojo.vo.CustomerReturnListGoodsStandardVO;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface CustomerReturnListGoodsMapper {
    /**
     * 插入客户退货清单商品数据
     *
     * @param customerReturnListGoodsAddNewDTO 客户退货清单商品数据
     * @return 受影响的行数
     */
    int insert(CustomerReturnListGoodsAddNewDTO customerReturnListGoodsAddNewDTO);

    /**
     * 批量插入客户退货清单商品数据
     *
     * @param customerReturnListGoodsAddNewDTOs 客户退货清单商品列表
     * @return 受影响的行数
     */
    int insertBatch(List<CustomerReturnListGoodsAddNewDTO> customerReturnListGoodsAddNewDTOs);
    /**
     * 根据id删除客户退货清单商品数据
     *
     * @param id 客户退货清单商品id
     * @return 受影响的行数
     */
    int deleteById(Long id);

    /**
     * 根据若干个id批量删除客户退货清单商品数据
     *
     * @param ids 若干个客户退货清单商品id的数组
     * @return 受影响的行数
     */
    int deleteByIds(Long[] ids);

    /**
     * 根据id修改客户退货清单商品数据
     *
     * @param customerReturnListGoods 封装了客户退货清单商品id和新数据的对象
     * @return 受影响的行数
     */
    int update(CustomerReturnListGoods customerReturnListGoods);

    /**
     * 统计客户退货清单商品表中的数据的数量
     *
     * @return 客户退货清单商品表中的数据的数量
     */
    int count();

    /**
     * 根据客户退货清单商品名称统计数据的数量
     *
     * @param name 客户退货清单商品名字
     * @return 匹配名称的客户退货清单商品数据的数量
     */
    int countByName(String name);

    /**
     * 根据id查询客户退货清单商品详情
     *
     * @param id 客户退货清单商品id
     * @return 匹配的客户退货清单商品详情，如果没有匹配的数据，则返回null
     */
    CustomerReturnListGoodsStandardVO getStandardById(Long id);

    /**
     * 查询客户退货清单商品列表
     *
     * @return 客户退货清单商品列表
     */
    List<CustomerReturnListGoodsListItemVO> list();

    /**
     * 根据退货单id查询客户退货清单商品列表
     *
     * @return 客户退货清单商品列表
     */
    List<CustomerReturnListGoodsListItemVO> listByReturnListId(Long id);

    /**
     * 根据退货单id删除客户退货清单商品数据
     *
     * @param ids 若干个客户退货清单商品id的数组
     * @return 受影响的行数
     */
    int deleteByListId(Long id);

    /**
     * 根据多种条件查询
     *
     * @return 客户退货清单商品列表
     */
    List<CustomerReturnListGoodsListItemVO> listByCondition(SelectReturnCondition condition);


    Integer getCountByGoodsId(Long id);
}
